package Classes;

import java.util.Observable;

/**
 *
 * @author Juampi
 */
public abstract class Contacto extends Observable implements Comparable {
    private int id;
    private String direccion;
    private String correoElectronico;
    private int telefono;
    public static final int ES_PERSONA = 1;
    public static final int ES_EMPRESA = 2;
    private Ciudad ciudad;

    public Ciudad getCiudad() {
        if (ciudad == null) {
            ciudad = new Ciudad(0);
        }
        return ciudad;
    }

    public void setCiudad(Ciudad ciudad) {
        this.ciudad = ciudad;
        this.setChanged();
        this.notifyObservers();
    }

    public abstract char getTipo();

    public String getDireccion() {
        if (direccion == null) {
            direccion = "";
        }
        return direccion;
    }

    public String getCorreoElectronico() {
        if (correoElectronico == null) {
            correoElectronico = "";
        }
        return correoElectronico;
    }

    public int getTelefono() {
        return telefono;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
        this.setChanged();
        this.notifyObservers();
    }

    public void setCorreoElectronico(String correoElectronico) {
        this.correoElectronico = correoElectronico;
        this.setChanged();
        this.notifyObservers();
    }

    public int compareTo(Object o) {
        Contacto contacto = (Contacto) o;        
        return this.getStringComparable().toLowerCase().compareTo(contacto.getStringComparable().toLowerCase());
    }

    public abstract String getStringComparable();

    public void setTelefono(int telefono) {
        this.telefono = telefono;
        this.setChanged();
        this.notifyObservers();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
        this.setChanged();
        this.notifyObservers();
    }
}
